<?php
class Application_Model_Authenticate
{
	public function createNumRandom()
	{
		//session_start();
		$md5_hash = md5(rand(0,999));
		$security_code = substr($md5_hash, 15, 5);
		//$_SESSION['security'] = $security_code;		
		echo $security_code;		
	}
	private function checkValidate($regular, $pattern)
	{
		if(preg_match($regular,$pattern)) 
			return true;
		else
			return false;
	}
		
	private function isMissingValue($param) 
	{
		if($param == null || trim($param) == '')
			return true;
		else
			return false;
	}

	private function checkDatabase($name,$value)
	{
		$sql = "select * from customer where $name = '$value'";
		$connect = new Application_Model_ConnectDB();
		$res = $connect->dbTable($sql);
		if(count($res))
			return true;
		else 
			return false;
	}

	private function compareValue($param1, $param2) 
	{
		if($param1 === $param2)
			return true;
		else
			return false;
	}
	
	public function authLogin($username,$password)
	{
		switch(true)
		{
			case 'checkUser':
				if($this->isMissingValue($username))
				{
					$errorMessage = "Tên đăng nhập không được để trống";
					break;
				}
				else {
					if(!$this->checkDatabase('customer_name', $username))
					{
						$errorMessage = "Tên đăng nhập này không tồn tại. Xin vui lòng nhập lại";
						break;
					}
				}
			case 'checkPassword':
				if($this->isMissingValue($password))
				{
					$errorMessage = "Mật khẩu không được để trống";
					break;
				}
				else {
					if(!$this->checkDatabase('customer_password', $password))
					{
						$errorMessage = "Mật khẩu này không tồn tại. Xin vui lòng nhập lại";
						break;
					}
				} 
				
		}
		return $errorMessage;	
	}

	public function authAccount($username,$password,$confPass,$email,$confEmail,$captcha)
	{		
		switch(true) 
		{
			case 'checkUser':
				if($this->isMissingValue($username))
				{			
					$errorMessage = "Tên tài khoản không được để trống";
					break;
				}
				else 
				{
					if($this->checkDatabase("customer_name", $username))
					{
						$errorMessage = "Tên tài khoản này đã tồn tại. Xin vui lòng nhập tên tài khoản khác";
						break;
					}
				}
				case 'checkPassword':
					if($this->isMissingValue($password)) 
					{
						$errorMessage = "Mật khẩu không được để trống";
						break;
					}
					else
					{
						if($this->checkDatabase("customer_password", $password))
						{
							$errorMessage = "Mật khẩu này đã tồn tại. Xin vui lòng nhập mật khẩu khác";
							break;
						}
					}
				case 'confirmPassword':
					if($this->isMissingValue($confPass)) 
					{
						$errorMessage = "Xác nhận mật khẩu không được để trống";
						break;				
					}
					else 
					{
						if(!$this->compareValue($password, $confPass))
						{
							$errorMessage = "Mật khẩu và phần xác nhận mật khẩu không trùng khớp";
							break;
						}
					}
				case 'checkEmail':
					if($this->isMissingValue($email)) 
					{
						$errorMessage = "Địa chỉ e-mail không được để trống";
						break;					
					}
					else 
					{
						if(!$this->compareValue($email, $confEmail))
						{
							$errorMessage = "Địa chỉ e-mail và phần xác nhận địa chỉ e-mail không trùng khớp";
							break;
						}
					}
					case 'checkCaptcha':
					if($this->isMissingValue($captcha)) 
					{
						$errorMessage = "Mã xác nhận không được để trống";
						break;					
					}
					else 
					{
						/*$security = $_SESSION['security'];						
						if(!$this->compareValue($captcha, $security))
						{
							$errorMessage = "Mã xác nhận nhập vào không chính xác";
							break;
						} */						
					} 	 				
		}		
		return $errorMessage;		
	}
} 
			